package Presentacion;

import AccesoDatos.Comando;
import AccesoDatos.Conexion;
import LogicaNegocio.Direccion;
import LogicaNegocio.Nacimiento;
import LogicaNegocio.Telefono;
import java.awt.Dimension;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Enumeration;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author REYES
 */
public class frmConsultaGeneral extends javax.swing.JInternalFrame {

    Conexion conexion = null;
    Nacimiento nacimiento = new Nacimiento(); // Objeto que se va a enviar al form frmConsultaGeneralLocalizaciones
    DefaultTableModel modelo = new DefaultTableModel(); // Modelo del JTable tbResultado
    ArrayList<Nacimiento> vNacimientos = new ArrayList<Nacimiento>();

    public frmConsultaGeneral(Conexion Pconexion) {
        conexion = Pconexion;
        initComponents();
        lbPrimerApellido.setVisible(false);
        lbSegundoApellido.setVisible(false);
        lbTelefono.setVisible(false);
        txtPrimerApellido.setVisible(false);
        txtSegundoApellido.setVisible(false);
        txtTelCedj.setVisible(false);
        rbPatrono.setVisible(false);
        modelo.addColumn("Cédula");
        modelo.addColumn("Nombre");
        modelo.addColumn("Primer Apellido");
        modelo.addColumn("Segundo Apellido");
        tbResultado.setModel(modelo);
        tbResultado.getColumnModel().getColumn(0).setPreferredWidth(15);
        tbResultado.getColumnModel().getColumn(1).setPreferredWidth(120);
        tbResultado.getColumnModel().getColumn(2).setPreferredWidth(15);
        tbResultado.getColumnModel().getColumn(3).setPreferredWidth(50);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        btngBusqueda = new javax.swing.ButtonGroup();
        jPanel1 = new javax.swing.JPanel();
        rbCedula = new javax.swing.JRadioButton();
        rbNombre = new javax.swing.JRadioButton();
        rbTelefono = new javax.swing.JRadioButton();
        rbPatrono = new javax.swing.JRadioButton();
        lbBusqueda = new javax.swing.JLabel();
        lbPrimerApellido = new javax.swing.JLabel();
        lbSegundoApellido = new javax.swing.JLabel();
        lbTelefono = new javax.swing.JLabel();
        txtCedNom = new javax.swing.JTextField();
        txtPrimerApellido = new javax.swing.JTextField();
        txtTelCedj = new javax.swing.JTextField();
        txtSegundoApellido = new javax.swing.JTextField();
        btnBuscar = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbResultado = new javax.swing.JTable();
        btnSalir = new javax.swing.JButton();

        setClosable(true);
        setTitle("Consulta general");

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Búsqueda", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 14))); // NOI18N

        btngBusqueda.add(rbCedula);
        rbCedula.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        rbCedula.setSelected(true);
        rbCedula.setText("Cédula");
        rbCedula.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                rbCedulaMouseClicked(evt);
            }
        });
        rbCedula.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbCedulaActionPerformed(evt);
            }
        });

        btngBusqueda.add(rbNombre);
        rbNombre.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        rbNombre.setText("Nombre");
        rbNombre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbNombreActionPerformed(evt);
            }
        });

        btngBusqueda.add(rbTelefono);
        rbTelefono.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        rbTelefono.setText("Teléfono");
        rbTelefono.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbTelefonoActionPerformed(evt);
            }
        });

        btngBusqueda.add(rbPatrono);
        rbPatrono.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        rbPatrono.setText("Patrono");
        rbPatrono.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                rbPatronoActionPerformed(evt);
            }
        });

        lbBusqueda.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lbBusqueda.setText("Cédula:");

        lbPrimerApellido.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lbPrimerApellido.setText("1er Apellido:");

        lbSegundoApellido.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lbSegundoApellido.setText("2ndo Apellido:");

        lbTelefono.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lbTelefono.setText("Teléfono:");

        txtCedNom.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N

        txtPrimerApellido.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        txtPrimerApellido.setText("Apelli 1");

        txtTelCedj.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        txtTelCedj.setText("Tel y CedJ");

        txtSegundoApellido.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        txtSegundoApellido.setText("Apelli 2");

        btnBuscar.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        btnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/src/imagenes/buscar.png"))); // NOI18N
        btnBuscar.setText("Buscar");
        btnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lbPrimerApellido)
                            .addComponent(lbBusqueda))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txtPrimerApellido)
                            .addComponent(txtCedNom, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lbSegundoApellido)
                            .addComponent(lbTelefono, javax.swing.GroupLayout.Alignment.TRAILING))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txtTelCedj, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtSegundoApellido, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(rbCedula)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rbNombre)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(rbTelefono)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rbPatrono)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnBuscar)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rbCedula)
                    .addComponent(rbNombre)
                    .addComponent(rbTelefono)
                    .addComponent(rbPatrono)
                    .addComponent(btnBuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(10, 10, 10)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txtTelCedj, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lbTelefono))
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txtCedNom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lbBusqueda)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lbSegundoApellido)
                        .addComponent(txtSegundoApellido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txtPrimerApellido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lbPrimerApellido)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Resultados", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 14))); // NOI18N

        tbResultado.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tbResultadoMouseClicked(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                tbResultadoMousePressed(evt);
            }
        });
        jScrollPane1.setViewportView(tbResultado);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(58, Short.MAX_VALUE))
        );

        btnSalir.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        btnSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/src/imagenes/salir_login.png"))); // NOI18N
        btnSalir.setText("Salir");
        btnSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalirActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(btnSalir, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(8, 8, 8)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 63, Short.MAX_VALUE)
                .addComponent(btnSalir)
                .addGap(20, 20, 20))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void rbCedulaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_rbCedulaMouseClicked
    }//GEN-LAST:event_rbCedulaMouseClicked

    private void rbCedulaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbCedulaActionPerformed
        lbBusqueda.setText("Cédula:");
        lbBusqueda.setVisible(true);
        txtCedNom.setVisible(true);
        lbPrimerApellido.setVisible(false);
        lbSegundoApellido.setVisible(false);
        lbTelefono.setVisible(false);
        txtPrimerApellido.setVisible(false);
        txtSegundoApellido.setVisible(false);
        txtTelCedj.setVisible(false);
        txtCedNom.setText("");
        txtPrimerApellido.setText("");
        txtSegundoApellido.setText("");
        txtTelCedj.setText("");
    }//GEN-LAST:event_rbCedulaActionPerformed

    private void rbNombreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbNombreActionPerformed
        lbBusqueda.setText("Nombre:");
        lbBusqueda.setVisible(true);
        txtCedNom.setVisible(true);
        lbPrimerApellido.setVisible(true);
        lbSegundoApellido.setVisible(true);
        txtPrimerApellido.setVisible(true);
        txtSegundoApellido.setVisible(true);
        lbTelefono.setVisible(false);
        txtTelCedj.setVisible(false);
        txtCedNom.setText("");
        txtPrimerApellido.setText("");
        txtSegundoApellido.setText("");
        txtTelCedj.setText("");
    }//GEN-LAST:event_rbNombreActionPerformed

    private void rbTelefonoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbTelefonoActionPerformed
        //lbBusqueda.setText("Cédula:");
        lbTelefono.setText("Teléfono:");
        lbTelefono.setVisible(true);
        txtTelCedj.setVisible(true);
        lbBusqueda.setVisible(false);
        txtCedNom.setVisible(false);
        lbPrimerApellido.setVisible(false);
        lbSegundoApellido.setVisible(false);
        txtPrimerApellido.setVisible(false);
        txtSegundoApellido.setVisible(false);
        txtCedNom.setText("");
        txtPrimerApellido.setText("");
        txtSegundoApellido.setText("");
        txtTelCedj.setText("");
    }//GEN-LAST:event_rbTelefonoActionPerformed

    private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalirActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnSalirActionPerformed

    private void tbResultadoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tbResultadoMouseClicked
        seleccionTbResultado();
    }//GEN-LAST:event_tbResultadoMouseClicked

    private void rbPatronoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rbPatronoActionPerformed
        lbBusqueda.setText("Cédula:");
        lbTelefono.setText("Cédula Jurídica");
        lbTelefono.setVisible(true);
        txtTelCedj.setVisible(true);
        lbPrimerApellido.setVisible(false);
        lbSegundoApellido.setVisible(false);
        txtPrimerApellido.setVisible(false);
        txtSegundoApellido.setVisible(false);
    }//GEN-LAST:event_rbPatronoActionPerformed

    private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarActionPerformed
        // Aqui va los metodos de busqueda
        vNacimientos.clear(); // Limpia el vector de nacimientos
        modelo.setRowCount(0); // Limpia el JTable
        String busqueda = getSeleccionBusqueda(btngBusqueda); // guardamos en la variable busqueda la seleccion de radio boton de busqueda
        switch (busqueda) {  // segun el tipo de busqueda realiza el procedimiento necesario.
            case "Cédula":
                try {
                    Comando comando = new Comando("SELECT * FROM tb_nacimientos WHERE CEDULA='" + txtCedNom.getText() + "'");
                    ResultSet rs = comando.ejecutarSQL(conexion);
                    if (rs.next()) {
                        rs.beforeFirst();
                        while (rs.next()) {
                            nacimiento.setCedula(rs.getInt("CEDULA"));
                            nacimiento.setFolio(rs.getDouble("FOLIO"));
                            nacimiento.setCedula1(rs.getDouble("CEDULA1"));
                            nacimiento.setCedula2(rs.getDouble("CEDULA2"));
                            nacimiento.setHospital(rs.getDouble("HOSPITAL"));
                            nacimiento.setHor_suceso(rs.getDouble("HOR_SUCESO"));
                            nacimiento.setFec_suceso(rs.getDouble("FEC_SUCESO"));
                            nacimiento.setSexo(rs.getDouble("SEXO"));
                            nacimiento.setNacionalidad(rs.getDouble("NACIONALI"));
                            nacimiento.setDefuncion(rs.getDouble("DEFUNCION"));
                            nacimiento.setPais_padre(rs.getDouble("PAIS_PADRE"));
                            nacimiento.setPais_madre(rs.getDouble("PAIS_MADRE"));
                            nacimiento.setRelleno(rs.getDouble("RELLENO"));
                            nacimiento.setProv_madre(rs.getDouble("PROV_MADRE"));
                            nacimiento.setFec_natura(rs.getDouble("FEC_NATURA"));
                            nacimiento.setRelleno1(rs.getDouble("RELLENO1"));
                            nacimiento.setApellido1(rs.getString("APELLIDO1"));
                            nacimiento.setApellido2(rs.getString("APELLIDO2"));
                            nacimiento.setNombre(rs.getString("NOMBRE"));
                            nacimiento.setPadre(rs.getString("PADRE"));
                            nacimiento.setMadre(rs.getString("MADRE"));
                            nacimiento.setLugar_nacimiento(rs.getString("LUG_NAC"));
                            nacimiento.setPadre(rs.getString("PADRE"));
                            nacimiento.setMadre(rs.getString("MADRE"));
                            nacimiento.setvTelefonos(obtenerTelefonos(txtCedNom.getText()));
                            nacimiento.setvDirecciones(obtenerDirecciones(txtCedNom.getText()));
                            vNacimientos.add(nacimiento);
                            Object[] fila = new Object[4];
                            fila[0] = rs.getInt("CEDULA");
                            fila[1] = rs.getString("NOMBRE");
                            fila[2] = rs.getString("APELLIDO1");
                            fila[3] = rs.getString("APELLIDO2");
                            modelo.addRow(fila);
                            tbResultado.repaint();
                        }
                    } else {

                        JOptionPane.showMessageDialog(this, "Cédula no encontrada", "Información", JOptionPane.INFORMATION_MESSAGE);

                    }
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), null, JOptionPane.ERROR_MESSAGE);
                }

                break;
            case "Nombre":
                try {
                    Comando comando = new Comando("SELECT *, MATCH(NOMBRE) against('"+ txtCedNom.getText() +"') + MATCH(APELLIDO1) against('"+ txtPrimerApellido.getText() +"') + MATCH(APELLIDO2) against('"+ txtSegundoApellido.getText() +"')  AS Rel FROM tb_nacimientos WHERE MATCH(NOMBRE) against('"+ txtCedNom.getText() +"') AND MATCH(APELLIDO1) against('"+ txtPrimerApellido.getText() +"') AND MATCH(APELLIDO2) against('"+ txtSegundoApellido.getText() +"') ORDER BY Rel LIMIT 100");
                    ResultSet rs = comando.ejecutarSQL(conexion);
                    if (rs.next()) {
                        rs.beforeFirst();
                        int i=0;
                        while (rs.next()) {
                            Nacimiento nacimiento = new Nacimiento();
                            nacimiento.setCedula(rs.getInt("CEDULA"));
                            nacimiento.setFolio(rs.getDouble("FOLIO"));
                            nacimiento.setCedula1(rs.getDouble("CEDULA1"));
                            nacimiento.setCedula2(rs.getDouble("CEDULA2"));
                            nacimiento.setHospital(rs.getDouble("HOSPITAL"));
                            nacimiento.setHor_suceso(rs.getDouble("HOR_SUCESO"));
                            nacimiento.setFec_suceso(rs.getDouble("FEC_SUCESO"));
                            nacimiento.setSexo(rs.getDouble("SEXO"));
                            nacimiento.setNacionalidad(rs.getDouble("NACIONALI"));
                            nacimiento.setDefuncion(rs.getDouble("DEFUNCION"));
                            nacimiento.setPais_padre(rs.getDouble("PAIS_PADRE"));
                            nacimiento.setPais_madre(rs.getDouble("PAIS_MADRE"));
                            nacimiento.setRelleno(rs.getDouble("RELLENO"));
                            nacimiento.setProv_madre(rs.getDouble("PROV_MADRE"));
                            nacimiento.setFec_natura(rs.getDouble("FEC_NATURA"));
                            nacimiento.setRelleno1(rs.getDouble("RELLENO1"));
                            nacimiento.setApellido1(rs.getString("APELLIDO1"));
                            nacimiento.setApellido2(rs.getString("APELLIDO2"));
                            nacimiento.setNombre(rs.getString("NOMBRE"));
                            nacimiento.setPadre(rs.getString("PADRE"));
                            nacimiento.setMadre(rs.getString("MADRE"));
                            nacimiento.setLugar_nacimiento(rs.getString("LUG_NAC"));
                            nacimiento.setPadre(rs.getString("PADRE"));
                            nacimiento.setMadre(rs.getString("MADRE"));
                            nacimiento.setvTelefonos(obtenerTelefonos(txtCedNom.getText()));
                            nacimiento.setvDirecciones(obtenerDirecciones(txtCedNom.getText()));
                            vNacimientos.add(nacimiento);                           
                            Object[] fila = new Object[4];
                            fila[0] = rs.getInt("CEDULA");
                            fila[1] = rs.getString("NOMBRE");
                            fila[2] = rs.getString("APELLIDO1");
                            fila[3] = rs.getString("APELLIDO2");
                            modelo.addRow(fila);
                            tbResultado.repaint();
                            i++;
                        }
                        
                        
                    } else {

                        JOptionPane.showMessageDialog(this, "Persona no encontrada", "Información", JOptionPane.INFORMATION_MESSAGE);

                    }
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), null, JOptionPane.ERROR_MESSAGE);
                }
                break;
            case "Teléfono":
                try {
                    Comando comando = new Comando("SELECT * FROM tb_nacimientos WHERE CEDULA = (SELECT CEDULA FROM tb_telefonos_ice WHERE TEL = '"+ txtTelCedj.getText() +"')");
                    ResultSet rs = comando.ejecutarSQL(conexion);
                    if (rs.next()) {
                        rs.beforeFirst();
                        while (rs.next()) {
                            nacimiento.setCedula(rs.getInt("CEDULA"));
                            nacimiento.setFolio(rs.getDouble("FOLIO"));
                            nacimiento.setCedula1(rs.getDouble("CEDULA1"));
                            nacimiento.setCedula2(rs.getDouble("CEDULA2"));
                            nacimiento.setHospital(rs.getDouble("HOSPITAL"));
                            nacimiento.setHor_suceso(rs.getDouble("HOR_SUCESO"));
                            nacimiento.setFec_suceso(rs.getDouble("FEC_SUCESO"));
                            nacimiento.setSexo(rs.getDouble("SEXO"));
                            nacimiento.setNacionalidad(rs.getDouble("NACIONALI"));
                            nacimiento.setDefuncion(rs.getDouble("DEFUNCION"));
                            nacimiento.setPais_padre(rs.getDouble("PAIS_PADRE"));
                            nacimiento.setPais_madre(rs.getDouble("PAIS_MADRE"));
                            nacimiento.setRelleno(rs.getDouble("RELLENO"));
                            nacimiento.setProv_madre(rs.getDouble("PROV_MADRE"));
                            nacimiento.setFec_natura(rs.getDouble("FEC_NATURA"));
                            nacimiento.setRelleno1(rs.getDouble("RELLENO1"));
                            nacimiento.setApellido1(rs.getString("APELLIDO1"));
                            nacimiento.setApellido2(rs.getString("APELLIDO2"));
                            nacimiento.setNombre(rs.getString("NOMBRE"));
                            nacimiento.setPadre(rs.getString("PADRE"));
                            nacimiento.setMadre(rs.getString("MADRE"));
                            nacimiento.setLugar_nacimiento(rs.getString("LUG_NAC"));
                            nacimiento.setPadre(rs.getString("PADRE"));
                            nacimiento.setMadre(rs.getString("MADRE"));
                            nacimiento.setvTelefonos(obtenerTelefonos(txtCedNom.getText()));
                            nacimiento.setvDirecciones(obtenerDirecciones(txtCedNom.getText()));
                            vNacimientos.add(nacimiento);
                            Object[] fila = new Object[4];
                            fila[0] = rs.getInt("CEDULA");
                            fila[1] = rs.getString("NOMBRE");
                            fila[2] = rs.getString("APELLIDO1");
                            fila[3] = rs.getString("APELLIDO2");
                            modelo.addRow(fila);
                            tbResultado.repaint();
                        }
                    } else {

                        JOptionPane.showMessageDialog(this, "Teléfono no encontrado", "Información", JOptionPane.INFORMATION_MESSAGE);

                    }
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage(), null, JOptionPane.ERROR_MESSAGE);
                }
                break;
            case "Patrono":
                JOptionPane.showMessageDialog(this, "Patrono", "Información", JOptionPane.INFORMATION_MESSAGE);
                break;
        }



    }//GEN-LAST:event_btnBuscarActionPerformed
    private ArrayList<Direccion> obtenerDirecciones(String cedula) {   // Metodo que obtiene las direcciones asociados a una cedula

        ArrayList<Direccion> vDirecciones = new ArrayList<Direccion>();

        try {

            Comando comando = new Comando("SELECT * FROM tb_direcciones where CEDULA = '" + cedula + "' ORDER BY FECHA DESC");
            ResultSet rs = comando.ejecutarSQL(conexion);
            if (rs.next()) {
                rs.beforeFirst();

                while (rs.next()) {
                    Direccion direccion = new Direccion();
                    direccion.setDIREC_LOCA(rs.getString("DIREC_LOCA"));
                    if (rs.getString("TEL1") == null) {
                        direccion.setTEL1("0");
                    } else {
                        direccion.setTEL1(rs.getString("TEL1"));
                    }
                    if (rs.getString("TEL2") == null) {
                        direccion.setTEL2("0");
                    } else {
                        direccion.setTEL2(rs.getString("TEL2"));
                    }
                    if (rs.getString("TEL3") == null) {
                        direccion.setTEL3("0");
                    } else {
                        direccion.setTEL3(rs.getString("TEL3"));
                    }
                    if (rs.getString("TEL4") == null) {
                        direccion.setTEL4("0");
                    } else {
                        direccion.setTEL4(rs.getString("TEL4"));
                    }


                    vDirecciones.add(direccion);
                }
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage(), null, JOptionPane.ERROR_MESSAGE);
        }
        return vDirecciones;

    }

    private ArrayList<Telefono> obtenerTelefonos(String cedula) {   // Metodo que obtiene los telefonos asociados a una cedula

        ArrayList<Telefono> vTelefonos = new ArrayList<Telefono>();

        try {

            Comando comando = new Comando("SELECT * FROM tb_telefonos_ice WHERE CEDULA='" + cedula + "'");
            ResultSet rs = comando.ejecutarSQL(conexion);
            if (rs.next()) {
                rs.beforeFirst();

                while (rs.next()) {
                    Telefono telefono = new Telefono();
                    telefono.setTEL(rs.getDouble("TEL"));
                    telefono.setDIREC(rs.getString("DIREC"));
                    vTelefonos.add(telefono);
                }
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage(), null, JOptionPane.ERROR_MESSAGE);
        }
        return vTelefonos;
    }

    private void tbResultadoMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tbResultadoMousePressed
        seleccionTbResultado();
    }//GEN-LAST:event_tbResultadoMousePressed

    public String getSeleccionBusqueda(ButtonGroup buttonGroup) { // Este metodo devuelve el texto del radiobutton seleccionado para realizar la busqueda
        for (Enumeration<AbstractButton> buttons = buttonGroup.getElements(); buttons.hasMoreElements();) {
            AbstractButton button = buttons.nextElement();

            if (button.isSelected()) {
                return button.getText();
            }
        }

        return null;
    }

    public void seleccionTbResultado() {
        int row = tbResultado.getSelectedRow();
        frmConsultaGeneralLocalizaciones fConsultaGeneralL = new frmConsultaGeneralLocalizaciones(vNacimientos.get(row), conexion);
        Dimension desktopSize = frmMain.jDesktopPane1.getSize();
        Dimension jInternalFrameSize = fConsultaGeneralL.getSize();
        int width = (desktopSize.width - jInternalFrameSize.width) / 2;
        int height = (desktopSize.height - jInternalFrameSize.height) / 2;
        fConsultaGeneralL.setLocation(width, height);
        frmMain.jDesktopPane1.add(fConsultaGeneralL);
        fConsultaGeneralL.show();

    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnBuscar;
    private javax.swing.JButton btnSalir;
    private javax.swing.ButtonGroup btngBusqueda;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lbBusqueda;
    private javax.swing.JLabel lbPrimerApellido;
    private javax.swing.JLabel lbSegundoApellido;
    private javax.swing.JLabel lbTelefono;
    private javax.swing.JRadioButton rbCedula;
    private javax.swing.JRadioButton rbNombre;
    private javax.swing.JRadioButton rbPatrono;
    private javax.swing.JRadioButton rbTelefono;
    private javax.swing.JTable tbResultado;
    private javax.swing.JTextField txtCedNom;
    private javax.swing.JTextField txtPrimerApellido;
    private javax.swing.JTextField txtSegundoApellido;
    private javax.swing.JTextField txtTelCedj;
    // End of variables declaration//GEN-END:variables
}
